# Python 类 (面向对象)
'''
什么是面向对象编程？
类的定义
类的书写规范
类示例化
初始化函数
'''


# 什么是面向对象编程？
'''
面向过程编程: 是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程。
面向对象编程: 是一种计算机编程架构，以对象为中心的编程思路，对现实世界理解和抽像的方式。
'''


# 类的定义
# 使用class关键字定义类
'''
class ClassName():
    def funcName(self):
    pass

例如:
电脑（类）:
  特征（属性）: 主机，显示器，键盘，鼠标…
    host = "4C8G"
    displayer = "27寸"  
    keyboard = "机械键盘"
    mouse = "无线鼠标"
  功能（方法）: 办公，上网，看片…
    def office():
      办公
    def internet():
      上网
    def movies():
      玩游戏
    ……
'''

# 类的书写规范
'''
.类一般采用大驼峰命名，例如MyClass
.类注释，用于说明该类的用途，提高可阅读性
.类中只存在两种数据：属性和方法
.声明属性必须赋值
.声明方法的第一个参数必须是self，其它于普通函数一样
.一般会使用__init__方法给类指定的初始化状态属性
'''


class Computer():
    '''
    电脑类
    '''
    # 属性（特征）
    def __init__(self):
        self.host = "4C8G"
        self.displayer = "27寸"
        self.keyboard = "机械键盘"
        self.mouse = "无线鼠标"
    # 方法（功能）
    def office(self):
        print("办公")
    def internet(self):
        print("上网")
    def movies(self):
        print("看片")


# 类的示例化
'''
通常称为:                            示例:
.示例化: 用于创建对象的过程             pc = Computer       #类似例化，pc是类实例
.类实例: 用类创建对象                  print(pc.host)      #访问类属性，查看电脑配置
.实例属性: 对象的属性                  print(pc.movies())  #访问类方法，让电脑做事
.实例方法: 对象调用的方法
'''

# 创建类
class Computer():
    '''
    电脑类
    '''
    # 属性（特征）
    def __init__(self):
        self.host = "4C8G"
        self.displayer = "27寸"
        self.keyboard = "机械键盘"
        self.mouse = "无线鼠标"
    # 方法（功能）
    def office(self):
        print("办公")
    def internet(self):
        print("上网")
    def movies(self):
        print("看片")
# 使用类
pc1 = Computer()
print(pc1.host)
print(pc1.movies())
print(pc1.displayer)
print(pc1.office())
print(pc1.keyboard)




# 初始化函数
# 示例：让某个人使用电脑做事
# 创建类
class Computer():
    '''
    电脑类
    '''
    # 属性（特征）
    def __init__(self,name):
        self.host = "4C8G"
        self.displayer = "27寸"
        self.keyboard = "机械键盘"
        self.mouse = "无线鼠标"
        self.name = name    # 接收参数
    # 方法（功能）
    def office(self):
        return "%s在办公" %self.name     # 等同于print(f"{self.name}在办公。。。")
    def internet(self):
        return "%s在上网" %self.name
    def movies(self):
        return "%s在看片" %self.name

# 函数初始化
zhangsan = Computer("张三")    #将张三传参给name
print(zhangsan.office())

lisi = Computer("李四")       #将李四传参给name
print(lisi.movies())

#pc2 = Computer()
#pc3 = Computer()
#print(pc2.host)
#print(pc3.host)

#pc2.host = "8C16G"
#pc2.displayer = "29寸"
#pc3.host = "2C4G"
#pc3.displayer = "24寸"

#print(pc2.host)
#print(pc2.displayer)
#print(pc3.host)
#print(pc3.displayer)


# 创建计算器类
class Calc():
    '''
    计算器类
    '''
    def __init__(self,num1,num2):
        self.num1 = num1
        self.num2 = num2
    def jia(self):
        return self.num1 + self.num2
    def jian(self):
        return self.num1 - self.num2
    def cheng(self):
        return self.num1 * self.num2
    def chu(self):
        return self.num1 % self.num2
calc = Calc(66,66)
print(calc.jia())
print(calc.chu())
print(calc.jian())
print(calc.cheng())